【Python】解析PDF文档文本和表格内容的四大方法介绍 |
您所在的位置:网站首页 › python 文档对比 › 【Python】解析PDF文档文本和表格内容的四大方法介绍 |
很多文件为了安全都会存成PDF格式,比如有的论文、技术文档、书籍等等,这给程序读取这些文档内容带来了很多麻烦。Python目前解析PDF的扩展包有很多,本文将对比介绍PyPDF2、pdfplumber、pdfminer3k以及Camelot,告诉你哪个是好用的PDF解析工具。码字不易,喜欢请点赞!!! 本文使用的案例PDF文档下载链接: 链接:https://pan.baidu.com/s/1zH7vY47AqBYKM0XbdABbUA 提取码:xhem 另外,获取PDF文档之后,会发现PDF文档中的换行符是以行的位置相同的,而不是跟段落相同。 1.PyPDF2解析PDF文档这里主要参考了2019-03-07,Usman Malik写的一篇文章:Python for NLP: Working with Text and PDF Files 使用Python或者Anaconda安装PyPDF2扩展包: pip install PyPDF2 OR conda install -c conda-forge pypdf2读取PDF文件 import PyPDF2 path = r"****.pdf" #使用open的‘rb’方法打开pdf文件(这里必须得使用二进制rb的读取方式) mypdf = open(path,mode='rb') #调用PdfFileReader函数 pdf_document = PyPDF2.PdfFileReader(mypdf) #使用pdf_document变量,获取各个信息 #或者PDF文档的页数 pdf_document.numPages #输出PDF文档的第一页内容 first_page = pdf_document.getPage(0) print(first_page.extractText())输出文档第一页内容之后会发现,PyPDF2方法对中文的支持不好,而对英文的支持会很好,所以如果处理中文文档的话,可以使用下面这个方法。 2.pdfplumber解析PDF文档安装的话直接使用下面语句即可: pip install pdfplumber(1)解析文本内容 pdfplumber中的extract_text函数是可以直接识别PDF中的文本内容。 首先读取整个PDF文档文本内容 import pdfplumber import pandas as pd with pdfplumber.open(path) as pdf: content = '' #len(pdf.pages)为PDF文档页数 for i in range(len(pdf.pages)): #pdf.pages[i] 是读取PDF文档第i+1页 page = pdf.pages[i] #page.extract_text()函数即读取文本内容,下面这步是去掉文档最下面的页码 page_content = '\n'.join(page.extract_text().split('\n')[:-1]) content = content + page_content print(content)解析文本内容,取出PDF的售后解决方案中的故障代码内容,可以看到故障代码内容,如下图所示,故障代码在两页里面。 运行结果如下,可以看出来很好的取出来这部分内容了。 可以看出这个函数非常容易的将PDF文档中的表格提取出来了。 pdfminer3k 是 pdfminer 的 python3 版本,主要用于读取 pdf 中的文本。如果直接搜索pdfminer3k的话会发现网上有非常多的教程,但是看了之后,你可能就想吐槽这些教程太繁琐了,看着头疼。 下面这个是pdfminer 解析PDF文档的流向图。 安装 Camelot先使用pip install camelot-py语句安装,如果报错,参考安装Camelot教程。 另外,使用camelot需要安装cv2包,上面这个安装教程中也有。 import camelot import pandas as pd tables = camelot.read_pdf(filepath=path,pages='1',flavor='stream') df = pd.DataFrame(tables[0].data)Camelot读取PDF文件中的表格数据很好用,并且能够很好的支持中文,但是Camelot有很多局限性。 首先,使用stream时,表格无法被自动侦测到,stream把整个页面当成一个table。 其次,camelot只用使用基于文本的PDF文件而不能使用扫描文档。 综上所述,建议使用pdfplumber扩展包来解析PDF文档的文本和表格,如果只解析文本内容,也可以使用pdfminer ,而解析英文文档内容,可以使用PyPDF2。 参考文献: https://blog.csdn.net/Asher117/article/details/83627701 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |